package com.lap.permission.domain.entity;

/*
 * Copyright 2020 The JA-SIG Collaborative. All rights reserved.
 * distributed with thi file and available online at
 */

import com.lap.framework.entity.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * <pre>
 * 	<b>表名</b>：resources
 *  服务资源,服务功能，其中一些通用字段在ModelDO和BaseDO里面，该对象基本上只用于数据保存使用。
 * </pre>
 *
 * @author Shuisheng.Lao
 * @version 1.0.0
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Schema(name = "资源")
public class Resource extends BaseEntity implements Serializable {
    @Serial
    private static final long serialVersionUID = -8547671051978147652L;

    /**
     * <pre>
     * 数据库字段: id
     * 描述: 主键;字段长度:11,是否必填:是。
     * </pre>
     */
    @Schema(name = "主键")
    private Integer id;
    /**
     * <pre>
     * 数据库字段: module
     * 描述: 资源模块;字段长度:32,是否必填:是。
     * </pre>
     */
    @Schema(name = "资源模块")
    private String module;
    /**
     * <pre>
     * 数据库字段: parent_uri_code
     * 描述: 父资源编码,提供建立关系;字段长度:128,是否必填:否。
     * </pre>
     */
    @Schema(name = "父资源编码,提供建立关系")
    private String parentCode;
    /**
     * <pre>
     * 数据库字段: uri_code
     * 描述: 资源编码,必须唯一;字段长度:128,是否必填:是。
     * </pre>
     */
    @Schema(name = "资源编码,必须唯一")
    private String code;
    /**
     * <pre>
     * 数据库字段: name
     * 描述: 资源名称;字段长度:64,是否必填:是。
     * </pre>
     */
    @Schema(name = "资源名称")
    private String name;
    /**
     * <pre>
     * 数据库字段: uri
     * 描述: 资源地址;字段长度:128,是否必填:是。
     * </pre>
     */
    @Schema(name = "资源地址")
    private String uri;
    /**
     * <pre>
     * 数据库字段: method
     * 描述: 方法类型:POST,PUT,GET,DELETE;字段长度:8,是否必填:是。
     * </pre>
     */
    @Schema(name = "方法类型")
    private String method;
    /**
     * <pre>
     * 数据库字段: perm_flag
     * 描述: 功能权限:0-否,1-是;字段长度:4,是否必填:是。
     * </pre>
     */
    @Schema(name = "功能权限")
    private Integer functionFlag;
    /**
     * <pre>
     * 数据库字段: data_flag
     * 描述: 数据权限:0-否,1-是;字段长度:4,是否必填:是。
     * </pre>
     */
    @Schema(name = "数据权限")
    private Integer dataFlag;
    /**
     * <pre>
     * 数据库字段: desensitize_flag
     * 描述: 数据脱敏:0-否,1-是;字段长度:4,是否必填:是。
     * </pre>
     */
    @Schema(name = "数据脱敏:0-否,1-是")
    private Integer desensitizeFlag;
    /**
     * <pre>
     * 数据库字段: desensitize_json
     * 描述: 脱敏信息:{field: {start:1,end:100} },是否必填:否。
     * </pre>
     */
    @Schema(name = "脱敏信息:{field: {start:1,end:100} }")
    private String desensitizeJson;
    /**
     * <pre>
     * 数据库字段: type_flag
     * 描述: 资源类型:0-模块,1-菜单,2-服务;字段长度:4,是否必填:是。
     * </pre>
     */
    @Schema(name = "资源类型:0-模块,1-菜单,2-服务")
    private Integer typeFlag;
    /**
     * <pre>
     * 数据库字段: service_flag
     * 描述: 服务类型:0-对外,1-对内
     * </pre>
     */
    @Schema(name = "服务类型:0-对内,1-对外")
    private Integer serviceFlag;
    /**
     * <pre>
     * 数据库字段: update_flag
     * 描述: 是否更新:0-否,1-是;字段长度:4,是否必填:是。
     * </pre>
     */
    @Schema(name = "是否更新:0-否,1-是")
    private Integer updateFlag;
    /**
     * 子资源
     */
    @Schema(name = "子资源")
    private List<Resource> children;

}

